このページは私用WordPressの覚え書き兼、テストページです。
「SNSボタン」は、テスト検証用に仮設置しているだけなので、押しても反応しません。

018_1・・・もし~なら「if構文」「条件分岐」

(※条件分岐、覚書メモ)


wordpressでは、if構文条件分岐タグは、頻繁に使うので、まとめておきます。

どこに書くかの決まりはなく、使いたい php ファイルに書きます。
例えば「投稿ページと固定ページではヘッダー画像を変えたい」という場合であれば、ヘッダー画像を出力させている header.php でしょうし、
「新着リストの中でカテゴリー毎に何かの表示を変えたい」という事であれば、その新着リストを出力している固定ページだったり、或いはトップページだったりするでしょう。


条件分岐の基本

<?php if (条件) : ?>
 条件にあてはまる場合の処理
<?php else: ?>
 それ以外の場合の処理
<?php endif; ?>



(例):モバイルとPCで別の文章を表示したい

<?php if ( wp_is_mobile() ) : ?>
 モバイルから閲覧の場合の処理
<?php else: ?>
 それ以外=PCからの閲覧の場合の処理
<?php endif; ?>

wp_is_mobile() とは、wordpress にあらかじめ用意されているタグです。
「モバイル(スマホ・タブレット)から閲覧されているかどうか」という判定をします。
但し wp_is_mobile() のタグでは正確な分岐にはならない、もっと細かく各モバイル毎に設定をした方がいい、という意見もあります。
wp_is_mobile() を使うかどうかについては、また別の記事でまとめたいと思います。
 → ■004_2 wp_is_mobile タグを使うか否か


else: は省略できる

<?php if ( 条件 ) : ?>
  条件にあてはまるものをココに書く
<?php endif; ?>
「それ以外の場合=何もしない」 ということであれば、
このように else: を省略してしまってもOKです。


elseif: で細かな条件分岐ができる

<?php if ( is_single() ) : ?>
 もし「個別記事」なら、△△△する
<?php elseif ( is_page() ) : ?>
 もし「固定ページ」なら、×××する
<?php else: ?>
 それ以外なら、○○○する
<?php endif; ?>
条件分岐を複数にした時は、elseif: を使います。
elseif:何回繰り返してもよく、条件をいくつでも増やすことができます。



もし「○○でない場合」という書き方

<?php if ( !is_single() ) : ?>
 個別ページでなかったら、の場合の処理をココに書く
<?php endif; ?>
条件の前に ! をつけると、否定形=「○○でない場合」になります。


複数の条件に当てはまる時(AND)

<?php if ( wp_is_mobile() && is_single() ) : ?>
  「モバイル」かつ「記事ページ」の場合の処理をココに書く
<?php endif; ?>
AND○○であり尚且つ△△でもある、という場合は、&& で、複数を繋げることができます。

いずれかの条件にしか当てはまらない時(OR)

<?php if ( wp_is_mobile() || is_single() ) : ?>
  「モバイル」あるいは「記事ページ」の場合の処理をココに書く
<?php endif; ?>
OR○○または△△、と、どれかにあてはまる場合、としたい時には、|| で、複数を繋げます。


スペルミスはエラーになる。
コロン括弧を書き間違えたり、書き忘れたりしないようにしましょう。
下記は特に間違えやすいので、注意しましょう。

ifとelseifの後には、コロン[:]
if(): と elseif(): というように書きます。 ; と書くとエラーになります。

endifの後には、セミコロン[;]
endif; と書きます。 : ではありません。

() や <> の数は合っているか
括弧は、ちゃんと閉じないとエラーになります。

全角文字(かなモード)で記号を入力しない
コロン[:]、セミコロン[;]、括弧や&&の記号、スペースなど、すべて欧文英数字(ローマ字モード)で入力すること。
日本語=全角文字(かなモード)は使わない。
意識せずに「全角スペース」を使ってしまっている方も多いです。これもダメです。

「何故かstyle.css が効かない!」という場合、ファイル中に「全角スペース」がないか、再確認してください。 「全角スペース」が含まれていると css は効かないです。




コメントを活用しよう

<?php if(条件): //◯◯のとき ?>
  ◯◯の条件の場合の処理をここに書く
<?php else: //◯◯でないとき?>
  それ以外の場合の処理をここに書く
<?php endif; //◯◯の条件分岐終了 ?>
// を書くと、続く一文はコメントになります。

複数行のコメントは、また別の書き方があります。
phpの外、htmlのコメントの書き方も、また別でちょっと違います。




if構文(例:)トップページだけ

<?php if ( is_home() || is_front_page() ) : ?>
 もし home.php または front.php なら の処理をここに書く
<?php else: ?>
 それ以外の場合の処理をここに書く
<?php endif; ?>
is_front_page() も書くことで、固定ページをホームに固定したときにも認識してくれるようになります。


if構文(例:)ホームの1ページ目だけ

<?php if( ( is_home() || is_front_page() ) && !is_paged() ) : ?>
	ホームの1ページ目のみに表示させたい処理をココに書く
<?php endif; ?>
さきほどの条件分岐だと、ホームの2ページ目(次の記事一覧)以降でも表示されます。
こちらの条件分岐であれば「ホームかつ1ページ目のとき」にのみ表示させることができます。


if構文(例:)個別記事ページだけ

<?php if ( is_single() ) : ?>
	「個別記事」ページでのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>



if構文(例:)固定ページだけ

<?php if ( is_page() ) : ?>
	「固定ページ」でのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>



if構文(例:)投稿ページもしくは固定ページだけ

<?php if ( is_singular() ) : ?>
	「投稿ページ」もしくは「固定ページ」で表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>



if構文(例:)特定の記事ページだけ

<?php if ( is_single('投稿ID') ) : ?>
	指定した記事でのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>
「この記事のときだけは表示するものを変えたい」「この記事のときだけ表示したい」というときに使います。
'投稿ID'は、記事をプレビューしたりした時に、記事のURLを見ると、
	~/wp018.html?preview_id=255
	
などと表示されるので、それで知ることができます。



if構文(例:)特定の記事ページだけ(複数あるとき)

<?php if ( is_single( array('投稿ID','投稿ID','投稿ID') ) ) : ?>
	指定した記事でのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>
例えば、<?php if( is_single( array('5','15','100') ) ): ?> とすると
「投稿IDが5、15、100のページ」と「それ以外のページ」で表示が切り替えられるようになります。
, の数を増やせば、いくつでもまとめて指定することができます。


if構文(例:)特定の固定ページだけ

<?php if ( is_page('ページID') ) : ?>
	指定した固定ページでのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>
固定ページIDも同じく、編集画面のURLで調べられます。


if構文(例:)特定の固定ページだけ(複数)

<?php if ( is_page( array('ページID','ページID','ページID') ) ) : ?>
	指定した固定ページでのみ表示する処理をココに書く
<?php else: ?>
	それ以外の処理をここに書く
<?php endif; ?>
例えば <?php if( is_page( array('1','5') ) ): ?> というように書きます。
また、数字を入れるとIDですが、数字の他に、スラッグ名タイトルも入れることができます。
   ↓
<?php if ( is_page( array( 17, 'beef-stew', 'Irish Stew' ) ) ) : ?>
ID17投稿スラッグが "beef-stew"、またはタイトルが "Irish Stew" のいずれかにあてはまる投稿が表示されている場合
となります。
数字=投稿IDの場合だけ、' ' を省略することができます。スラッグやタイトルの ' ' は、省略できません

参照■WordPress Codex日本語版「条件分岐タグ」